Repository navigation
Fix factory inference, add snapshots, and partition RISC-V CI - #34
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes
Wasm now accepts unannotated builtin factories when their uses resolve to one concrete return type, including aliases and nested scopes. C emits factory adapters before lifted functions and gives
withbindings the same mangled names and lexical type information as body references. A regression fixture exercises Vec, Map and OwnedVec factories across interpreter, C, LLVM and Wasm.Add
snapshot : 'a -> 'afor immutable plain data that must survive container compaction and recycling. It evaluates its argument once in the caller's scope and uses region-result copying on compiled targets. Containers, functions, borrows and capabilities are rejected recursively; unresolved wrapper and alias types remain monomorphic to preserve the bound. Documentation marks the API as unreleased.Partition the hosted RISC-V sweep into RV32 corpus, RV64 corpus and shared boundary checks across existing groups. Preserve default all-mode behavior, output comparisons, named refusals and known-difference freshness checks. A routing audit compares the three partitions against all-mode, including refusal paths. CI now requires 191 gates across the same nine groups and four build configurations.
Stabilize the resumed-pinner lifetime negative control by forcing reclamation at the intended boundary; incidental conservative pins could previously hide the injected fault.
Validation
Hosted verification
Final PR CI passes all 17 jobs and all 191 required gates, once each in the assigned group. Execution logs confirm all three real emulator modes, the partition audit and all 84 snapshot refusals. RV32 reports 220 agreements, seven expected differences and 20 named compile refusals; RV64 reports 244 agreements, two expected differences and one named refusal. The factory fixture is explicitly refused on RISC-V because its
withexpression is an existing unsupported feature. The snapshot fixture also executes and matches at both widths in focused local checks.RV64-only mode now prints only the RV64 corpus summary; the audit rejects a misleading RV32 compile-only footer.
Merged-main CI also passes all 17 jobs and all 191 required gates on the merged source. Pages builds and deploys that same commit successfully. The merged tree matches the tested PR tree.
Main CI takes 25m19s, compared with 25m29s for the previous main run. RISC-V drops from 25m15s to 13m10s; compiler is now the longest group at 25m06s. Overall CI remains approximately 25 minutes, so an overall speedup is not established. Setup, cache state and runner load vary. The partition preserves coverage and removes RISC-V as the longest group in these runs.